package com.sky.controller.admin;

import com.github.pagehelper.Page;
import com.sky.dto.CategoryDTO;
import com.sky.dto.CategoryPageQueryDTO;
import com.sky.entity.Category;
import com.sky.result.Result;
import com.sky.service.CategoryService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.apache.poi.ss.formula.functions.T;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;
import java.util.Map;

/**
 * 分类管理
 */
@RestController
@RequestMapping("/admin/category")
@Api(tags = "分类相关接口")
@Slf4j
public class CategoryController {
    @Autowired
    CategoryService categoryService;
/**
 * 分类信息分页查询接口
 * @return 返回分页查询结果
 */
    @GetMapping("/page")    // HTTP GET请求映射，路径为"/page"
    @ApiOperation("分类信息分页查询")    // Swagger API注解，描述接口功能
    public Result page(CategoryPageQueryDTO dto) {    // 方法定义，接收分页查询DTO参数
        log.info("接受参数{}", dto);    // 打印接收到的参数信息，用于日志记录

        return Result.success(categoryService.page(dto));    // 调用服务层方法进行分页查询，并返回成功结果
    }
/**
 * 新增分类接口
 * @PostMapping 表示这是一个HTTP POST请求映射
 * @ApiOperation("新增分类") 是API文档注解，说明此接口用于新增分类
 * @param dto 包含分类信息的DTO(Data Transfer Object)对象
 * @return 返回一个操作结果对象(Result)，成功时返回success状态
 */
    @PostMapping
    @ApiOperation("新增分类")
    public Result addCategory(CategoryDTO dto){
    // 调用categoryService的addCategory方法处理新增分类的业务逻辑
        categoryService.addCategory(dto);
    // 返回操作成功的结果
        return Result.success();
    }

    /**
     * 修改菜品状态
     * @param status
     * @param id
     * @return
     */

    @PostMapping("/status/{status}")
    @ApiOperation("分类状态修改")
    public Result updateStatus(@PathVariable Integer status,Long id){
        categoryService.updateStatus(status,id);
        return Result.success();
    }

    /**
     * 根据ID获取分类信息
     * @param id
     * @return
     */
    @GetMapping
    @ApiOperation("id查分类")
    public Result getCategoryById(Long id){
        log.info("接受参数{}", id);
        return Result.success(categoryService.getCategoryById(id));
    }

    /**
     * 根据ID删除分类信息
     * @param id
     * @return
     */
    @DeleteMapping
    @ApiOperation("id删分类")
    public Result deleteCategoryById(Long id){
        categoryService.deleteCategoryById(id);
        return Result.success();
    }

    /**
     * 更新分类信息
     * @param dto
     * @return
     */

    @PutMapping
    @ApiOperation("修改分类")
    public Result updateCategory(@RequestBody  CategoryDTO dto){
        categoryService.updateCategory(dto);
        return Result.success();
    }

    /**
     * 根据类型查询分类
     * @return
     */
    @GetMapping("/list")
    @ApiOperation("根据类型查询分类")
    public Result getByType(@RequestParam String type){
        Integer IntegerType = Integer.parseInt(type);
        List<Category> categories= categoryService.getByType(IntegerType);
        log.info("categories:{}",categories);
        return Result.success(categories);
    }

}
